#pragma once

#include <vector>
#include <string>

class RockArray
{
    friend bool operator == (const RockArray& r1, const RockArray& r2);
    
public:
    RockArray(const std::string& filepath);
    RockArray(const RockArray& rock) = default;

public:
    void print() const;
    std::size_t getTotalLoad() const;

    void rollNorth();
    void rollSouth();
    void rollWest();
    void rollEast();

    RockArray clone() const;

private:
    void rollRoundedRocksNorth(std::size_t row, std::size_t col);
    void rollRoundedRocksSouth(std::size_t row, std::size_t col);
    void rollRoundedRocksWest(std::size_t row, std::size_t col);
    void rollRoundedRocksEast(std::size_t row, std::size_t col);

private:
    std::vector<std::string> _rocks;
};

bool operator == (const RockArray& r1, const RockArray& r2);